\chapter{Zusammenfassung und ein Ausblick in die Zukunft}
Dieses Kapitel fasst die in dieser Arbeit erzielte Ergebnisse zusammen und gibt einen Ausblick auf m"ogliche Verbesserungen und Erweiterungen der vorgestellten Implementierung.
\section{Zusammenfassung}
Das Ziel dieser Arbeit war die Entwicklung und Implementierung eines Tools zur Analyse und Berechnung von Benutzer-Profilen mit modernen Java-Technologien. Dies lie"s sich in einen theoretischen und einen praktischen Teil aufgespalten. Das Ziel des theoretischen Teils war die Umwandlung der in den mathematischen Formeln dargestellte Methodik zum Berechnung von NOPs in Algorithmus und die Analyse der Komplexit"at dieser Algorithmus. Das Ziel des praktischen Teils war das Aufbauen der NOP-Engine. die Implementierung dieses umgewandelten Algorithmus und . Hierbei waren  die Anforderungsanalyse, den Softwareentwurf, die Implementierung und die Tests f"ur die NOP-Engine gestellt. Dieser Prozess werden im Folgenden zusammengefasst.   
\subsection{Umsetzung der Methodik an den Algorithmus}
Die NOP's zu berechnende Methodik besteht aus f"unf mathematischen Formeln, die in einer aus der Sicht von Informatiker erkennbaren Form umgewandelt werden mussten, bevor sie implementiert werden k"onnen. Eine Pseudocode-Formatvorlage wurde dazu ausgew"ahlt, und war zur Umwandlung der mathematischen Formeln in Algorithmus im praktischen Einsatz gekommen. Um ein gutes Verst"andnis zu haben lie"s sich der Algorithmus in vier Teilen aufteilen, sowie eine Start-Funktion und drei Subroutinen. Zum Steigern der Performance bei der Berechnung von NOP's wurde eine Analyse der Zeitkomplexit"at des Algorithumus durchgef"uhrt, und wurde dabei gezeigt, dass der umgewandelte Algorithmus effizient ist.
\subsection{Implementierung der NOP-Eigine}
Der Prozess der Implementierung der NOP-Engine wurde nach der Softwareentwicklungsstandard in vier Phasen, sowie Anforderungsanalyse, Softwareentwurf, Implementierung und Tests durchgef"uhrt. Dazu wurden mehrere modernen Entwicklungstechnologien verwendet.
\subsubsection{Anforderugnsanalyse f"ur die NOP-Engine}
Das Ziel dieser Anforderungsanalyse war das Festhalten der Funktionalit"aten und der Bedingungen zur Anwendung der NOP-Engine. Um die Anforderungen herauszufinden und spezifizieren, wurde die Anwendung der NOP-Engine mit Hilfe der Cockburn-Formatvorlage in mehreren auf reinen Texts  basierten Anwendungsf"allen umgewandelt, und parallel ein Anwendungsfalldiagramm zur anschaulichen Beschreibung der umgesetzten Anwendungsf"allen dargestellt. Die herausgefundene Anforderungen lie"sen sich schlie"slich in zwei Gruppen, sowie funktionale bzw. spezielle  Anforderungen aufteilen, und ausf"uhrlich spezifiziert. 
\subsubsection{Softwareentwurf f"ur die NOP-Engine}
Das Ziel dieses Softwareentwurfs war eine konkrete L"osung zu den Anforderungen der NOP-Engine. Dabei wurde eine Schichtenarchitektur und ein Dom"anenmodell mit Hilfe von DDD aufgebaut. Der Vorteil dieser Schichtenarchitektur war eine Entkopplung zwischen einzelnen Schichten. Dabei wurden die theoretische Konzepte der NOP-Engine in Dom"anenobjekten umgewandelt, und durch mehrere UML-Diagramme, sowie zwei Klassendiagramme, ein Sequenzdiagramm und ein Paketdiagramm graphisch modelliert. Um die Konkrete Funktion zur Auswertung des Parameters $f$ auszuw"ahlen, wurde eine L"osung durch den Entwurfsmuster "`strategy"' gegeben. Zum Aufbauen der Datenbanktabellen wurde eine Mapping-Strategie verwendet, die sogenannte "`eine Tabelle pro Konkreter Klasse"'. Der Vorteil dieser Strategie ist eine schnelle Durchf"uhrung der Anfragen. Dabei wurde die Historisierung von Zone, Aktionen und NOP's auf der theoretischen Ebene in L"osung gebracht. Zum Aufbauen der Web-Seiten der NOP-Engine wurde der Entwurfsmuster "`Front Controller"' verwendet, die HTTP-Request f"ur all Web-Seiten zu verwalten und die Reponse zu steuern.  
\subsubsection{Implementierung mit modernen JAVA-Technologien}
Das implementierte System musste hierbei in Aufbau und Einsatz flexibel, wiederverwendbar gestaltet sein. Dazu wurden moderne Frameworks wie das Framework {\em Spring}, das Framework {\em Hibernate} und das Framework {\em JSF} eingesetzt. Mit Hilfe dieser Frameworks wurde die im Kapitel \ref{chapter:design} vorgestellte Schichtenarchitektur f"ur die NOP-Engine implementiert. Dabei wurden mehrere eingesetzten Codes zum Einsatz dieser Frameworks und zur L"osung der wichtigen Dom"anenprobleme, sowie die Historisierung von Zonen, Aktionen bzw. NOP's und das freie Ausw"ahlen einer konkreten Funktion zur Auswertung des Parameters $f$ in dieser Arbeit detailliert beschrieben.   
\subsubsection{Tests}
Das Ziel dieser Tests war das verifizieren der Korrektheit des Kern-Algorithmus, das "Uberpr"ufen der Verbindung mit der Datenbank bzw. O/R Mapping und das Messen der Funktionalit"aten der implementierten NOP-Engine an die Anforderungen. Dazu wurden mehrere Testf"alle f"ur diese Aufgaben aufgebaut, und einige wichtige im Abschnitt \ref{section:testcase} ausf"uhrlich vorgestellt. Dabei wurden die Test-Framework {\em JUnit} zum Aufbauen der automatisierten Tests eingesetzt. Zum Testen der Implementierung des Kern-Algorithmus aber ohne Datenbank wurde die Mock-Technologie in diesen Tests eingef"uhrt, und durch das Framework {\em JMock}  zum Simulieren der noch nicht implementierten Schnittstellen der Persistenzschicht realisiert. 
\subsubsection{Fazit}
Die in dieser Arbeit implementierten NOP-Engine wurde mit einer leichtgewichtigen Schichtenarchitektur entwickelt. Die meisten Funktionalit"aten des Systems wurde als Interfaces durch das Konzept Service von DDD dargestellt, deren Abh"anigkeiten durch das Framework {\em Spring} au"ser den Codes verwaltet wurden. Der Vorteil dieser Implementierung besteht drin, dass das Ver"andern der Funktionalit"aten auf wenigsten vorhandenen Codes beeinflusst. Der Prozess dieser Implementierung wurde m"oglichst nach dem Softwareentwicklungsstandart von der Anforderungsanalyse bis hinzu dem Testen durchgef"uhrt, um ein objektorientiertes, flexibles, wiederverwendbares und wartbares Werkzeug  zur Berechnung von NOPs zu entwickeln.
\section{Erweiterung der NOP-Engine}
Die Entwicklung und Implementierung eines vollst"andigen System zur Analyse und Berechnung von NOPs ist in einer einzelnen Diplomarbeit nicht zu bewerkstelligen. Aus diesem Grunde ist auch die in dieser Arbeit entwickelten und implementierten NOP-Engine in ihrem Funktionsumfang recht bescheiden.  Im Folgenden wird auf m"ogliche Erweiterungen eingegangen.
\subsection{Einsatz der Semantik in der NOP-Engine}
Das im Kapitel \ref{chapter:ground} vorgestellte Konzept Semantik bietet die Vielfalt zum Erstellen der Gewichte von Themen und zur Analyse der NOP's. Im implementierten System wurde Semantik nur als einen Platzhalter betrachtet und f"ur die Berechnung von NOP's nicht eingesetzt. Eine Erweiterung zum Einsatz der Semantik in der NOP-Engine ist erwartet.
\subsection{Realisierung eines Archivierungsmechanismus f"ur NOP's}
Wegen der gro"sen Anzahl der m"oglich aufgetauchten Benutzer-Sessionen k"onnten zahlreiche NOP's daf"ur generiert. Um die Performance zum Selektieren eines gewissen NOP's zu steigern sollten die vorhandenen NOP's periodisch in einem externen Medium, z.B. eine XML- oder eine SQL-Datei, archiviert, und aus der Datenbank entfernt werden. Dazu w"urde ein Verfahren zum Wiederherstellen dieser archivierten NOP's erfordert, um diese NOP's wiederzufinden und als die Eingaben nach dem System Clustering zu liefern.
\subsection{Verfeinerung der graphischen Benutzerschnittstelle} 
F"ur die implementierten NOP-Engine steht nur eine einfache graphische Benutzerschnittstelle zur Verf"ugung. F"ur ein Prototyp ist diese GUI ausreichend, aber andererseits f"ur ein Software nicht. Eine Verfeinerung und Versch"onung dieser GUI ist erwartet. 
\subsection{Optimierung der L"osung zum freien ausw"ahlten der Konkreten Funktion f"ur den Parameter $f$}  
Es besteht die M"oglichkeit, dass stets die neuen Funktionen zur Auswertung des Parameters $f$ in der NOP-Engine hinzugef"ugt w"urden. Die aktuelle L"osung zum freien ausw"ahlten dieser Funktionen ist f"ur ein h"aufigeres  Einf"ugen oder Erfernen der neuen bzw. alten Funktionen nicht geeignet, da f"ur jedes Einf"ugen oder Entfernen ein neues Starten der ganzen Web-Anwendung verbindlich ist. Hierf"ur ist eine Optimierung der aktuellen L"osung erwartet, die durch eine Web-Seite das Einf"ugen und Entfernen dieser Funktionen steuert, und sie im Vergleich der aktuellen L"osung mit der Datenbank verwaltet.